package com.itheima.test;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
 * @author junmanna
 * @version 1.0
 * @date 2019/11/10 15:28
 */

public class POItest {

    //使用poi读取excel数据
    //@Test
    public void test1() throws Exception {
        //加载指定文件，创建一个excel对象
        XSSFWorkbook excle = new XSSFWorkbook(new FileInputStream(new File("F:\\poishuju.xlsx")));
        //读取文件中的第一个sheet标签页
        XSSFSheet sheet = excle.getSheetAt(0);
        //遍历sheet工作表中获得每行的对象
        for (Row row : sheet) {
            //遍历行对象获取单元格对象
            for (Cell cell : row) {
                //获得单元格中的值
                String value = cell.getStringCellValue();
                System.out.println(value);

            }
        }
        excle.close();
    }

    //@Test
    public void test2() throws Exception {
        //加载指定文件，创建一个excel对象
        XSSFWorkbook excle = new XSSFWorkbook(new FileInputStream(new File("F:\\poishuju.xlsx")));
        //读取文件中的第一个sheet标签页
        XSSFSheet sheet = excle.getSheetAt(0);
        //获得当前工作中的最后一个行号
        int lastRowNum = sheet.getLastRowNum();
        System.out.println("lastRowNum = " + lastRowNum);
        for (int i = 0; i <= lastRowNum; i++) {
            XSSFRow row = sheet.getRow(i);//根据行号获取每一行
            //获取当前行最后一个单元格索引
            short lastCellNum = row.getLastCellNum();
            for (int j = 0; j < lastCellNum;j++){
                XSSFCell cell = row.getCell(j);//根据单元格索引获得单元格对象
                System.out.println(cell.getStringCellValue());
            }
        }
        //关闭资源
        excle.close();
    }
    //使用POI向Excel文件写入数据，并且通过输出流将创建的excel文件保存到本地磁盘
    //@Test
    public void test3() throws Exception{
        //在内存中创建一个excel文件（工作簿）
        XSSFWorkbook excel = new XSSFWorkbook();
        //创建一个工作表对象
        XSSFSheet sheet = excel.createSheet("YRSWBY");
        //在工作表中创建行对象
        XSSFRow title = sheet.createRow(0);
        //在行中创建单元格对象
        title.createCell(0).setCellValue("姓名");
        title.createCell(1).setCellValue("地址");
        title.createCell(2).setCellValue("年龄");

        XSSFRow dataRow = sheet.createRow(1);
        dataRow.createCell(0).setCellValue("小明");
        dataRow.createCell(1).setCellValue("北京");
        dataRow.createCell(2).setCellValue("20");

        XSSFRow dataRow2 = sheet.createRow(2);
        dataRow2.createCell(0).setCellValue("小红");
        dataRow2.createCell(1).setCellValue("赣州");
        dataRow2.createCell(2).setCellValue("20");

        //创建一个输出流，通过输出流将内存中的Excel文件写到磁盘
        FileOutputStream out = new FileOutputStream(new File("F:\\helloshuju.xlsx"));
        excel.write(out);
        out.flush();
        out.close();
    }

}
